package com.fmy.mcsecurity.token;

import com.fmy.mcsecurity.token.model.SecurityToken;
import org.springframework.security.core.Authentication;

import java.util.concurrent.TimeUnit;

/**
 * @author Mr.fmy
 * @version 1.0.0
 * @ClassName TokenGenerate
 * @Description TODO token生成接口
 * @createTime 2019/12/9 11:05
 */
public interface TokenGenerate {

    /**
     * 生成 {@link SecurityToken}
     *
     * @param client         客户端
     * @param type           登录类型
     * @param authentication 授权类
     * @return {@link SecurityToken}
     */
    SecurityToken generate(String client, String type, Authentication authentication);

    /**
     * token 过期时间
     */
    long getTokenExp();

    /**
     * 刷新 token 过期时间
     */
    long getRefresExp();

    /**
     * 过期时间类型
     */
    TimeUnit getTimeUnit();
}
